在使用 Flet 构建移动应用程序时,你可能需要直接与特定于平台的 API 进行交互。无论是访问系统信息、管理蓝牙设备还是处理用户偏好设置,Kivy 的Pyjnius和Pyobjus为将 Python 与 Java(用于 Android)和 Objective-C(用于 iOS)连接起来提供了一种无缝方式。
现在你可以将 Pyjnius 和 Pyobjus 都集成到你的 Flet 应用程序中!🚀
Android 的 Pyjnius
Pyjnius 是一个 Python 库,用于使用Java 本地接口(JNI)访问 Java 类。
添加到项目中
仅为 Android 构建添加pyjnius
依赖项(为简洁起见,pyproject.toml
中的其他设置被省略):
[project]
name = "pyjnius_demo"
version = "0.1.0"
dependencies = [
"flet==0.27.1"
]
[tool.flet.android]
dependencies = [
"pyjnius"
]
用法示例
以下是一些在你的 Flet Android 应用程序中如何使用 Pyjnius 的示例。
获取 Android 操作系统详细信息
from jnius import autoclass
# 获取 Build 和 Build.VERSION 类
Build = autoclass('android.os.Build')
Version = autoclass('android.os.Build$VERSION')
# 获取操作系统详细信息
device_model = Build.MODEL
manufacturer = Build.MANUFACTURER
brand = Build.BRAND
hardware = Build.HARDWARE
product = Build.PRODUCT
device = Build.DEVICE
os_version = Version.RELEASE
sdk_version = Version.SDK_INT
列出蓝牙设备
from jnius import autoclass
# Get BluetoothAdapter instance
BluetoothAdapter = autoclass('android.bluetooth.BluetoothAdapter')
bluetooth_adapter = BluetoothAdapter.getDefaultAdapter()
if bluetooth_adapter is None:
print("Bluetooth not supported on this device")
else:
if not bluetooth_adapter.isEnabled():
print("Bluetooth is disabled. Please enable it.")
else:
print("Bluetooth is enabled.")
# Get paired devices
paired_devices = bluetooth_adapter.getBondedDevices()
for device in paired_devices.toArray():
print(f"Device Name: {device.getName()}, MAC Address: {device.getAddress()}")
访问活动
应用程序主活动实例可以通过以下代码检索:
import os
from jnius import autoclass
activity_host_class = os.getenv("MAIN_ACTIVITY_HOST_CLASS_NAME")
assert activity_host_class
activity_host = autoclass(activity_host_class)
activity = activity_host.mActivity
哎呀,你基本上可以使用 Pyjnius 调用任何 Android API——有无尽的可能性!
查看完整的Flet Pyjnius 示例。
有关更多 Pyjnius 示例和 API,请参考Pyjnius 文档。
...或者只是使用 ChatGPT(或你最喜欢的 LLM)获取更多想法和解决方案!😅
iOS 的 Pyobjus
Pyobjus 是一个库,用于使用 Objective-C 运行时反射将 Objective-C 类作为 Python 类进行访问。
添加到项目中
仅为 iOS 构建添加pyobjus
依赖项(为简洁起见,pyproject.toml
中的其他设置被省略):
[project]
name = "Pyjnius"
version = "0.1.0"
dependencies = [
"flet==0.27.1"
]
[tool.flet.ios]
dependencies = [
"pyobjus"
]